package testJdk.thread.pool.testThreadPool;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
 * 自定义的线程类
 * 使用外界传入的taskList，这个特性决定了多个线程类，可以共享同一个taskList
 */
public class MyWorker extends Thread {
    private final Logger logger = LoggerFactory.getLogger(MyWorker.class);

    /*
     * 保存线程的名字,可以不用，直接利用父类继承的变量。
     * private String name;
     */

    private final List<Runnable> taskList;

    /**
     * 利用构造方法给成员变量赋值
     */
    public MyWorker(String name, List<Runnable> tasks) {
        // 直接利用父类继承的变量
        super(name);
        this.taskList = tasks;
        logger.info("创造线程：{}", name);
    }

    @Override
    public void run() {
        // 判断taskList中是否有任务，只要有，就一直执行
        while (taskList.size() > 0) {
            Runnable task = taskList.remove(0);
            task.run();
        }
    }
}
